package com.ruicar.afs.cloud.manage.common.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruicar.afs.cloud.common.core.entity.BaseEntity;
import com.ruicar.afs.cloud.common.modules.contract.enums.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * @author: Lee
 * @date 2020-05-30 09:21:16
 * @description 客户身份信息变更申请表
 */
@Data
@Accessors(chain = true)
@TableName(value = "manage_cust_info_change", autoResultMap = true)
public class ManageCustInfoChange extends BaseEntity<ManageCustInfoChange> {
    /**
     * 渠道id
     */
    @ApiModelProperty("渠道id")
    @JsonSerialize(using = ToStringSerializer.class)
    @JSONField(serializeUsing = com.alibaba.fastjson.serializer.ToStringSerializer.class)
    private Long channelId;
    /**
     * 合同号码
     */
    @ApiModelProperty("合同号码")
    private String contractNo;
    /**
     * 案件编号
     */
    @ApiModelProperty("案件编号")
    private String caseNo;
    /**
     * 申请编号
     */
    @ApiModelProperty("申请编号")
    private String applyNo;
    /**
     * 数据来源 枚举值：CMS、多品系统
     */
    @ApiModelProperty("数据来源 枚举值：CMS、多品系统")
    private DataSourceEnum dataSource;
    /**
     * 变更主体 枚举值: 主借人、共借人、但保人
     */
    @ApiModelProperty("变更主体 枚举值: 主借人、共借人、但保人")
    private PersonRoleTypeEnum changeSubject;
    /**
     * 变更类型 枚举值：仅更新身份证件有效期 仅姓名（曾用名） 姓名及身份证件号码 其他信息
     */
    @ApiModelProperty("变更类型 枚举值：仅更新身份证件有效期 仅姓名（曾用名） 姓名及身份证件号码 其他信息")
    private CustInfoChangeTypeEnum changeType;
    /**
     * 原姓名
     */
    @ApiModelProperty("原姓名")
    private String oldName;
    /**
     * 新姓名
     */
    @ApiModelProperty("新姓名")
    private String newName;
    /**
     * 原证件类型
     */
    @ApiModelProperty("原证件类型")
    private String oldCertType;
    /**
     * 新证件类型
     */
    @ApiModelProperty("新证件类型")
    private String newCertType;
    /**
     * 原证件号码
     */
    @ApiModelProperty("原证件号码")
    private String oldCertNo;
    /**
     * 新证件号码
     */
    @ApiModelProperty("新证件号码")
    private String newCertNo;
    /**
     * 原证件有效期起
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JSONField(format = "yyyy-MM-dd")
    @ApiModelProperty("原证件有效期起")
    private Date oldCertStartDate;
    /**
     * 新证件有效期起
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("新证件有效期起")
    private Date newCertStartDate;
    /**
     * 原证件有效期止
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JSONField(format = "yyyy-MM-dd")
    @ApiModelProperty("原证件有效期止")
    private Date oldCertEndDate;
    /**
     * 新证件有效期止
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JSONField(format = "yyyy-MM-dd")
    @ApiModelProperty("新证件有效期止")
    private Date newCertEndDate;
    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remarks;
    /**
     * 申请时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date applyDate;
    /**
     * 结束时间 案件审批完成时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("结束时间 案件审批完成时间")
    private Date endDate;
    /**
     * 处理状态 枚举值
     */
    @ApiModelProperty("处理状态 枚举值")
    private ProcessStatusEnum processStatus;
    /**
     * 客户姓名
     */
    @ApiModelProperty("客户姓名")
    private String custName;
    /**
     * 合同状态
     */
    @ApiModelProperty("合同状态")
    private ContractStatusEnum contractStatus;
    /**
     * 业务来源
     */
    @ApiModelProperty("业务来源")
    private BusinessSourceEnum businessSource;
    /**
     * 客户号
     */
    @ApiModelProperty("客户号")
    private String custNo;
    @ApiModelProperty("所在省份")
    private String province;
    @ApiModelProperty("所在城市")
    private String city;
    @ApiModelProperty("原所在省份")
    private String oldProvince;
    @ApiModelProperty("原所在城市")
    private String oldCity;
    @ApiModelProperty("原还款银行")
    private String oldBank;
    /**
     * 新还款银行
     */
    @ApiModelProperty("新还款银行")
    private String newBank;
    /**
     * 原银行账号
     */
    @ApiModelProperty("原银行账号")
    private String oldBankAccount;
    /**
     * 新银行账号
     */
    @ApiModelProperty("新银行账号")
    private String newBankAccount;
    /**
     * 申请人
     */
    @ApiModelProperty("新银行账号")
    private String applyBy;
    /**
     * 其他信息
     */
    @ApiModelProperty("其他信息")
    private String other;
}
